
#ifndef FASTCLIENTLAPPLICATION_H
#define FASTCLIENTLAPPLICATION_H

#include "FASTApplication.h"

#include <Communication\Assembler_fwd.h>
#include <Codecs\TemplateRegistry_fwd.h>
#include <Codecs\HeaderAnalyzer_fwd.h>
#include <Messages\ValueMessageBuilder_fwd.h>

#include <Codecs/NoHeaderAnalyzer.h>
#include <Codecs/FastEncodedHeaderAnalyzer.h>

#include <string>

    class FASTClientApplication : public FASTApplication
    {
    public:
      FASTClientApplication();
      ~FASTClientApplication();

	  /// @brief run the program
      /// @returns a value to be used as an exit code of the program (0 means all is well)
      virtual int run();

	private:
	  QuickFAST::Communication::AssemblerPtr CreateAssemblerForMode(QuickFAST::Messages::ValueMessageBuilder & pbuilder);

    private:
	  QuickFAST::Codecs::NoHeaderAnalyzer noHeaderAnalizer_;
	  QuickFAST::Codecs::FastEncodedHeaderAnalyzer fastEncodedHeaderAnalizer_;
    };

#endif // FASTCLIENTLAPPLICATION_H
